#pragma once
#include <iostream>
#include <time.h>

#define INF 0
#define DBG 1
#define ERR 2
#define DEFAULT_LOG_LEVEL DBG

#define LOG(level,format,...) do{\
    if(DEFAULT_LOG_LEVEL > level) break;\
    time_t t = time(NULL);\
    struct tm* lt = localtime(&t);\
    char buffer[32] = {0};\
    strftime(buffer,31,"%H:%M:%S",lt);\
    fprintf(stdout,"[%s %s:%d] " format "\n",buffer,__FILE__,__LINE__,##__VA_ARGS__);\
}while(0)

#define INF_LOG(format, ...) LOG(INF, format, ##__VA_ARGS__)
#define DBG_LOG(format, ...) LOG(DBG, format, ##__VA_ARGS__)
#define ERR_LOG(format, ...) LOG(ERR, format, ##__VA_ARGS__)